#include #include #define MaxSize 10 #define Infinity 1000 int w[ MaxSize ][ MaxSize ], v[ MaxSize ], e1, e2, n, s; void main() { int i, j, k, a, b, c, min, add_vertex; printf( "Enter n: " ); scanf( "%d", &n ); for ( i = 1; i <= n; i++ ) for ( j = 1; j <= n; j++ ) w[ i ][ j ] = Infinity; for ( ; ; ) { printf( "Enter edge (i,j) and weight\n" "Negative to quit: " ); scanf( "%d%d%d", &a, &b, &c ); if ( a < 0 || b < 0 || c < 0 ) break; w[ a ][ b ] = w[ b ][ a ] = c; } printf( "Enter start vertex: " ); scanf( "%d", &s ); printf( "\nBeginning Prim's algor\n\n" ); for ( i = 1; i <= n; i++ ) v[ i ] = 0; v[ s ] = 1; for ( i = 1; i <= n - 1; i++ ) { min = Infinity; for ( j = 1; j <= n; j++ ) if ( v[ j ] == 1 ) for ( k = 1; k <= n; k++ ) if ( v[ k ] == 0 && w[ j ][ k ] < min ) { printf( "Examining edge (%d,%d)\n", j, k ); add_vertex = k; e1 = j; e2 = k; min = w[ j ][ k ]; } v[ add_vertex ] = 1; printf( "Adding edge (%d,%d)\n\n", e1, e2 ); } }